﻿using System;
using Jacobi.Vst.Core;
using Jacobi.Vst.Core.Host;

namespace Play.VstPluginManagement
{
	public class VstHostCommandStub : IVstHostCommandStub
	{
		public void SetParameterAutomated(int index, float value)
		{
			Console.WriteLine("SetParameterAutomated");
		}

		public int GetVersion()
		{
			return 1;
		}

		public int GetCurrentPluginID()
		{
			throw new System.NotImplementedException();
		}

		public void ProcessIdle()
		{
			Console.WriteLine("ProcessIdle");
		}

		public VstTimeInfo GetTimeInfo(VstTimeInfoFlags filterFlags)
		{
			return new VstTimeInfo();
		}

		public bool ProcessEvents(VstEvent[] events)
		{
			Console.WriteLine("Process Events");
			return true;
		}

		public bool IoChanged()
		{
			throw new System.NotImplementedException();
		}

		public bool SizeWindow(int width, int height)
		{
			throw new System.NotImplementedException();
		}

		public float GetSampleRate()
		{
			throw new System.NotImplementedException();
		}

		public int GetBlockSize()
		{
			throw new System.NotImplementedException();
		}

		public int GetInputLatency()
		{
			throw new System.NotImplementedException();
		}

		public int GetOutputLatency()
		{
			throw new System.NotImplementedException();
		}

		public VstProcessLevels GetProcessLevel()
		{
			throw new System.NotImplementedException();
		}

		public VstAutomationStates GetAutomationState()
		{
			throw new System.NotImplementedException();
		}

		public string GetVendorString()
		{
			throw new System.NotImplementedException();
		}

		public string GetProductString()
		{
			return "Byond Host";
		}

		public int GetVendorVersion()
		{
			return 1;
		}

		public VstCanDoResult CanDo(string cando)
		{
			throw new System.NotImplementedException();
		}

		public VstHostLanguage GetLanguage()
		{
			throw new System.NotImplementedException();
		}

		public string GetDirectory()
		{
			throw new System.NotImplementedException();
		}

		public bool UpdateDisplay()
		{
			return true;
		}

		public bool BeginEdit(int index)
		{
			Console.WriteLine("BeginEdit");
			return true;
		}

		public bool EndEdit(int index)
		{
			Console.WriteLine("EndEdit");
			return true;
		}

		public bool OpenFileSelector(VstFileSelect fileSelect)
		{
			throw new System.NotImplementedException();
		}

		public bool CloseFileSelector(VstFileSelect fileSelect)
		{
			throw new System.NotImplementedException();
		}

		public IVstPluginContext PluginContext { get; set; }
	}
}